/**
 * merge level=71
 * 
 * 树状的菜单
 */

Ext.define('Jfok.view.region.MainMenuRegion', {
			extend : 'Ext.panel.Panel',
			alias : 'widget.mainmenuregion',
			layout : {
				type : 'accordion',
				animate : true
			},

			multi : true,
			menuAccordion : false,

			tools : [{
						type : 'pin',
						tooltip : '层叠方式显示菜单',
						listeners : {
							click : function(tool) {
								var panel = tool.up('mainmenuregion');
								panel.insert(0, panel.getMenuWithAccordion());
								panel.items.items[0].expand();
								panel.remove(panel.down('mainmenutree'), true);
								tool.hide();
								tool.nextSibling().show();
							}
						}
					}, {
						type : 'unpin',
						tooltip : '树状方式显示菜单',
						hidden : true,
						listeners : {
							click : function(tool) {
								var panel = tool.up('mainmenuregion');
								panel.insert(0, {
											xtype : 'mainmenutree'
										});

								panel.items.items[0].expand();
								Ext.each(panel.query('panel[menuAccordion]'), function(
												accordion) {
											panel.remove(accordion, true)
										})
								tool.hide();
								tool.previousSibling().show();
							}
						}
					}, {
						itemId : 'up',
						type : 'up',
						tooltip : '在上面显示菜单条'
					}],

			initComponent : function() {

				this.items = []; // = this.getMenuWithAccordion();

				this.items = this.items.concat([{
							xtype : 'mainmenutree'
						}, {
							title : '待办事项',
							collapsed : true,
							layout : {
								type : 'accordion',
								animate : true,
								multi : true
							},
							items : [{
										xtype : 'moduleapproveinfotree',
										width : '100%'
									}, {
										xtype : 'moduleauditinginfotree',
										width : '100%'
									}, {
										xtype : 'modulepayoutinfotree',
										width : '100%'
									}]
						}])

				this.callParent(arguments);
			},

			getMenuWithAccordion : function() {
				var accordions = [];
				for (var i in Jfok.system.tf_MenuGroups) {
					var menugroup = Jfok.system.tf_MenuGroups[i];

					var accpanel = {
						menuAccordion : true,
						xtype : 'panel',
						title : menugroup.tf_title,
						bodyStyle : {
							padding : '10px'
						},
						layout : 'vbox',
						items : [],
						icon : Ext.themeName === 'neptune' ? null : menugroup.tf_iconURL
					};
					for (var j in menugroup.tf_menuModules) {
						var menumodule = menugroup.tf_menuModules[j];
						var module = Jfok.modules
								.getModuleInfoWithId(menumodule.tf_ModuleId);
						if (!module) {
							continue;
						}
						if (module.tf_userRole && module.tf_userRole.tf_allowBrowse) {
							accpanel.items.push({
										xtype : 'label',
										width : '100%',
										cls : 'labelmenu',
										menuLabel : true,
										moduleId : module.tf_moduleId,
										moduleName : module.tf_moduleName,
										parentFilter : menumodule.tf_parentFilter,
										text : menumodule.tf_title || module.tf_title,
										icon : module.iconURL,
										listeners : {
											render : function(component) {
												debugger;
												Ext.fly(this.el).on("click", function(e, t) {
															debugger;
															component.fireEvent("click", component);
														});
											}
										}
									});
						}
					}

					if (menugroup.tf_title == '综合查询'
							&& Jfok.system.tf_ReportGroups.length > 0) {

						accpanel = {
							menuAccordion : true,
							xtype : 'panel',
							title : menugroup.tf_title,
							bodyStyle : {
								padding : '10px'
							},
							layout : 'vbox',
							items : [],
							icon : menugroup.tf_iconURL
						};

						for (var i in Jfok.system.tf_ReportGroups) {
							var g = Jfok.system.tf_ReportGroups[i];

							accpanel.items.push({
										xtype : 'label',
										width : '100%',
										cls : 'labelmenu',
										menuLabel : true,
										report : true,
										reportGroupId : g.tf_reportGroupId,
										text : g.tf_title,
										icon : g.tf_iconURL,
										listeners : {
											render : function(component) {
												debugger;
												Ext.fly(this.el).on("click", function(e, t) {
													debugger;
															component.fireEvent("click", component);
														});
											}
										}
									});
						}
					}
					if (accpanel.items.length > 0)
						accordions.push(accpanel);
				}
				return accordions;
			}

		});

Ext.define('Jfok.view.region.MainMenuTree', {
			requires : ['Jfok.lib.TreeFilter'],
			extend : 'Ext.tree.Panel',
			alias : 'widget.mainmenutree',
			title : '系统菜单',
			rootVisible : false,
			mixins : {
				treeFilter : 'Jfok.lib.TreeFilter'
			},
			lines : true,
			initComponent : function() {
				this.store = Ext.create('Ext.data.TreeStore', {
							root : {
								text : '系统菜单',
								leaf : false,
								expanded : true
							}
						});
				var root = this.store.getRootNode();
				for (var i in Jfok.system.tf_MenuGroups) {
					var menugroup = Jfok.system.tf_MenuGroups[i];

					var menuitem = root.appendChild({
								text : menugroup.tf_title,
								expanded : menugroup.tf_expand,
								icon : Ext.themeName === 'neptune'
										? null
										: menugroup.tf_iconURL
							});
					for (var j in menugroup.tf_menuModules) {
					
						var menumodule = menugroup.tf_menuModules[j];
						var module = Jfok.modules
								.getModuleInfoWithId(menumodule.tf_ModuleId);
						if (!module) {
							// console.log("创建菜单时：" + menumodule.tf_ModuleId + "未找到！")
							continue;
						}
						if (module.tf_userRole && module.tf_userRole.tf_allowBrowse) {
							var childnode = {
								moduleId : module.tf_moduleId,
								moduleName : module.tf_moduleName,
								parentFilter : menumodule.tf_parentFilter,
								text : menumodule.tf_title || module.tf_title,
								icon : Ext.themeName === 'neptune' ? null : module.iconURL,
								leaf : true
							};
							if (menumodule.tf_parentMenu) {
								var pmenu = menuitem
										.findChild('text', menumodule.tf_parentMenu);
								if (!pmenu) {
									pmenu = menuitem.appendChild({
												isParentMenu : true,
												text : menumodule.tf_parentMenu,
												leaf : false
											});
								}
								pmenu.appendChild(childnode);
							} else
								menuitem.appendChild(childnode);
						}
					}
					if (!(menuitem.childNodes && menuitem.childNodes.length != 0))
						root.removeChild(menuitem);

					if (menugroup.tf_title == '综合查询'
							&& Jfok.system.tf_ReportGroups.length > 0) {
						var menuitem = root.appendChild({
									text : menugroup.tf_title,
									expanded : menugroup.tf_expand,
									icon : Ext.themeName === 'neptune'
											? null
											: menugroup.tf_iconURL
								});
						for (var i in Jfok.system.tf_ReportGroups) {
							var g = Jfok.system.tf_ReportGroups[i];
							menuitem.appendChild({
										report : true,
										reportGroupId : g.tf_reportGroupId,
										text : g.tf_title,
										icon : Ext.themeName === 'neptune' ? null : g.tf_iconURL,
										leaf : true
									})
						}
					}
				}
				this.callParent(arguments);
			}
		})
